package fit.deni.hibernate;

import java.util.Collection;

import org.apache.tapestry5.hibernate.annotations.CommitAfter;
import org.hibernate.Session;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

import fit.deni.beans.Iznajmljivanje;
import fit.deni.hibernate.interfaces.IznajmljivanjeService;

public class IznajmljivanjeServiceImpl implements IznajmljivanjeService {

	private Session session;

	public IznajmljivanjeServiceImpl(Session session) {
		this.session = session;
	}
	
	@CommitAfter
	public void addRent(Iznajmljivanje i) {
		session.save(i);
	}
	
	public Collection<Iznajmljivanje> getAll() {
		return session.createCriteria(Iznajmljivanje.class).add(Restrictions.eq("deleted", false)).list();
	}
	
	public Collection<Iznajmljivanje> getTop20() {
		return session.createCriteria(Iznajmljivanje.class).setMaxResults(20)
			.addOrder(Order.desc("datumIznajmljivanja")).add(Restrictions.eq("deleted", false)).list();
	}

	@CommitAfter
	public void deleteRent(Iznajmljivanje i) {
		i.setDeleted(true);
		session.merge(i);
//		session.delete(i);
//		session.flush();
	}

	public Iznajmljivanje getRentById(int id) {
		return (Iznajmljivanje) session.createCriteria(Iznajmljivanje.class).add(Restrictions.eq("id", id)).list().get(0);
	}

}
